The present disclosure relates to techniques for updating a software product. More specifically, the present disclosure relates to techniques for providing an update for a software application to a portable electronic device.
Thanks in part to a large and growing number of portable electronic devices, such as cellular telephones, and the associated mobile software applications, portable electronic devices are becoming increasingly popular computing platforms. However, in spite of this market success, the fragmentation of the market and the diversity of users are also making it increasingly difficult to support these software applications. For example, the diversity of hardware and software configurations in portable electronic devices, even within a given model or platform, is making the process of installing and updating software applications increasingly challenging.
The updating of mobile software applications is typically managed by a platform-specific mobile application manager (which is henceforth referred to as an ‘application management system’). While the details of the updating process are also often platform dependent, when deciding whether to install an update for a software application, the application management system in a portable electronic device typically checks the application identifier and version number associated with the software application. In particular, when a software application is submitted for installation, the application management system checks the application identifier and version number to determine if it is a ‘recognized’ new version that can update a previous version of the software application. For example, in a recognized update scenario, a software application a1 is an update to software application a0 if they have the same application identifier and if the version number of software application a1 is greater than the version number of software application a0 (i.e., their version numbers have an ordinal relationship).
If the application management system recognizes the software application as a new version of a previously installed software application, the user is then typically requested to ‘approve’ the update. Once user approval is received, the application management system executes an update workflow, which involves: removing (or uninstalling) the previous version of the software application; installing the new version of the software application; and, as needed, preserving, removing or transforming data associated with the previous version of the software application for use by the new version of the software application.
The application identifier and version number used by the application management system are typically specified by the application developer when the software application is built or published. However, it can be difficult or impossible for the application developer to specify the application identifier and version number for a given software application in such a way that results in update workflows being performed in the wide variety of portable electronic devices in which a previous version of this software application is installed. This problem is particularly challenging in several important use cases.
For example, it is currently impossible for an application developer to publish a software application as an update to two previously published software applications that had different application identifiers. Thus, if the application developer first created two software-application variants with functionality tailored to different cellular network operators or carriers, there is currently no way to subsequently publish a single version of the software application as an update to both of the previously published variants. Similarly, it may be difficult or impossible for the application developer to publish a single software application as an update to both ‘light’ and ‘full’ versions of the software application, or to publish an ‘enterprise’ version of the software application as an update to both ‘professional’ and ‘premium’ variants. Alternatively, it is difficult (if not impossible) for the application developer to publish two software-application variants (for example, for different languages or different geographic locations), either of which can be used to update an earlier version of the software application, because both variants would have to share the same application identifier, which may not be acceptable by software-application distribution channels, such as mobile-application stores.
In these circumstances, a new version of a software application may not be recognized as an ‘acceptable’ update by the application management system. As a consequence, after downloading the new version of the software application, a user may be forced to try to manually remove the previous version of the software application. In such cases, the data associated with application version being updated may not be accessed by the new version because the two applications are ‘seen’ as unrelated by the operating system and, therefore, have different data-protection domains. This creates a significant usability problem, which can degrade the user experience, and which makes it more difficult and expensive for application developers to support software updates.